home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / language / isetl.arc / where.t < prev   
Text File  |  1987-08-20  |  1KB  |  63 lines

  1. $ the abbreviated form for iteration over the same set now works
  2.  
  3.     [ [x,y] : x,y in [1..4] ];
  4.     [ [x,y,z,w] : x,y in [1..2], z,w in [3..4] ];
  5.  
  6. $ it is now possible to create recursive functions that
  7. $ do not depend on the name of the function remaining unchanged
  8.  
  9.  
  10.     fact := f where f := func(n); 
  11.                  if n<=1 
  12.                 then return 1; 
  13.                 else return n*f(n-1);
  14.                  end;
  15.             end;
  16.           end;
  17.  
  18.     fact (3);
  19.  
  20.     g := fact;
  21.     fact := om;
  22.     g (3);
  23.  
  24. $ in contrast, consider what happens here
  25.  
  26.     fact := func(n); 
  27.          if n<=1 
  28.          then return 1; 
  29.          else return n*fact(n-1);
  30.          end;
  31.         end;
  32.  
  33.     fact (3);
  34.  
  35.     g := fact;
  36.     fact := om;
  37.     g (3);
  38.  
  39.  
  40. $ This example shows how a collection of mutually recursive functions
  41. $ can be created, only making the needed function visible.
  42.  
  43.     a := a where a := func(); print "a"; b(); end;
  44.          c := func(); print "c";      end;
  45.          b := func(); print "b"; c(); end;
  46.          end;
  47.  
  48.     a();
  49.  
  50.  
  51. $ the following example creates a function that has access to a hidden
  52. $ variable.  this allow you to easily simulate many of the object
  53. $ oriented concepts
  54.  
  55.     counter := c where c := func(); last := last+1; return last; end;
  56.                last := 0;
  57.                end;
  58.  
  59.     counter();
  60.     counter();
  61.     counter();
  62.     counter();
  63.